//package com.pkx.guide.timing;
//
//import jakarta.annotation.Resource;
//import org.springframework.scheduling.TaskScheduler;
//import org.springframework.scheduling.support.CronTrigger;
//import org.springframework.stereotype.Component;
//
//import java.util.HashMap;
//import java.util.Map;
//import java.util.concurrent.ScheduledFuture;
//
//@Component
//public class DynamicTaskManager {
//
//    @Resource
//    private TaskScheduler taskScheduler;
//
//    // 存储任务ID与任务执行句柄的映射，用于后续删除/暂停任务
//    private final Map<String, ScheduledFuture<?>> taskMap = new HashMap<>();
//
//    /**
//     * 新增动态定时任务
//     * @param taskId 任务唯一标识（如数据库中的任务ID）
//     * @param cronExpression cron表达式（如"0 0 6 * * ?"表示每天6点执行）
//     * @param task 任务执行逻辑（Runnable接口实现）
//     */
//    public void addTask(String taskId, String cronExpression, Runnable task) {
//        // 先删除已存在的同名任务（避免重复）
//        if (taskMap.containsKey(taskId)) {
//            removeTask(taskId);
//        }
//        // 基于cron表达式创建触发器
//        CronTrigger trigger = new CronTrigger(cronExpression);
//        // 注册任务并获取执行句柄，存入map
//        ScheduledFuture<?> future = taskScheduler.schedule(task, trigger);
//        taskMap.put(taskId, future);
//    }
//
//    /**
//     * 删除动态定时任务
//     * @param taskId 任务唯一标识
//     */
//    public void removeTask(String taskId) {
//        ScheduledFuture<?> future = taskMap.get(taskId);
//        if (future != null) {
//            future.cancel(true); // 取消任务执行
//        }
//        taskMap.remove(taskId);
//    }
//
//    /**
//     * 暂停动态定时任务（如需恢复，需重新添加）
//     * @param taskId 任务唯一标识
//     */
//    public void pauseTask(String taskId) {
//        removeTask(taskId); // 取消即暂停，恢复需重新调用addTask
//    }
//}